package common

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

// BaseResponse 数据返回通用JSON数据结构
type BaseResponse struct {
	Status       int         `json:"status"` // 错误码((0:成功, 1:失败, >1:错误码))
	Msg          string      `json:"msg"`    // 提示信息
	Data         interface{} `json:"data"`   // 返回数据(业务接口定义具体数据结构)
	EncryptLevel uint        `json:"encryptLevel" d:"0"`
}

// Json 返回标准JSON数据。
func Json(r *ghttp.Request, Status int, Msg string, EncryptLevel uint, data ...interface{}) {
	var responseData interface{}
	if len(data) > 0 {
		responseData = data[0]
	} else {
		responseData = g.Map{}
	}
	r.Response.WriteJson(BaseResponse{
		Status:       Status,
		Msg:          Msg,
		Data:         responseData,
		EncryptLevel: EncryptLevel,
	})
}

// JsonExit 返回标准JSON数据并退出当前HTTP执行函数。
func JsonExit(r *ghttp.Request, code int, message string, EncryptLevel uint, data ...interface{}) {
	Json(r, code, message, EncryptLevel, data...)
	r.Exit()
}
